package com.example.advancecomponents;

import static com.example.advancecomponents.utils.StarUtil.plantList;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;

import com.example.advancecomponents.adaptors.PagerTabStripAdapter;
import com.example.advancecomponents.adaptors.StarDetailFragmentPagerAdapter;

public class PagerTabStripActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_pager_tab_strip);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        PagerTabStrip detailTab = findViewById(R.id.detailTab);


        ViewPager detailPager = findViewById(R.id.detailViewPager);

        if(getIntent().getBooleanExtra("useFragment",false)){
            // 动态 Fragment 目前个人觉得的优点
            // 1、把本应该是 Adapter 来实例化的 layout.xml
            //      单独委派给了 Fragment 子对象 来进行实例化
            // 2、Fragment 有自己完整的生命周期，在比较复杂的页面
            //      把页面拆分成多个Fragment页面而不是放在一个Activity里面
            //      可以降低耦合
            // 3、如果有超多Fragment，那么系统会自动管理其生命周期
            //      当一个页面长时间不用时，系统会自动将其销毁，减少资源消耗
            //      一旦发生页面切换，只有相邻的页面会被加载，非相邻页面被回收
            // 4、在 Fragment 中可以访问 Context，Fragment至此已经和 Activity 没有太大差别了
            detailPager.setAdapter(new StarDetailFragmentPagerAdapter(getSupportFragmentManager(),plantList()));
        }else{

            // 这里的适配器需要实现 getPageTitle() 方法来给 PagerTabStrip 设置标题
            detailPager.setAdapter(new PagerTabStripAdapter(this, plantList()));
        }
    }
}